package work;
import java.io.*; // 导入相关类

public class Shiyan7_2_4 {
    public static void main(String[] args) throws Exception {
        // 创建文件读取器和缓冲读取器
        FileReader fin = new FileReader("phone.txt");
        try (BufferedReader bin = new BufferedReader(fin)) {
            // 读取一行文本数据
            String s = bin.readLine();
            System.out.println(s);

            System.out.print("\n以;作为分隔符来提取字符串\n");
            // 按照;分隔符提取字符串
            String[] sa = s.split(";");
            for (String ss : sa) {
                System.out.print("==" + ss); // 用==来区分数组元素
            }

            System.out.print("\n\n以正则表达式[,;]作为分隔符来提取字符串\n");
            // 按照[,]和[;]正则表达式分隔符提取字符串
            sa = s.split("[,;]");
            for (String ss : sa) {
                System.out.print("==" + ss); // 用==来区分数组元素
            }

            System.out.print("\n\n用正则表达式[\\D*&&[^- ]]提取出所有的电话号码\n");
            // 用正则表达式提取数字
            sa = s.split("[\\D*&&[^- ]]");
            for (String ss : sa) {
                System.out.print(ss + "#"); // 用#来区分数组元素
            }

            System.out.println("\n\n将兰州的电话改为0931-xxxxxxx");
            // 将所有符合格式 0931 后接空格或短横线，再接七位数字的电话号码替换为 0931-x{7}
            String s1 = s.replaceAll("0931[ -]\\d{7}", "0931-x{7}");
            // 替换为 0931-xxxxxxx
            String s2 = s.replaceAll("0931[ -]\\d{7}", "0931-xxxxxxx");

            // 输出修改前后的字符串
            System.out.println("s=" + s);
            System.out.println("s1=" + s1);
            System.out.println("s2=" + s2 + "\n\n");
        }

        // 示例字符串
        String s3 = "a99+0X55f-55/0xAF+33";
        // 使用正则表达式从字符串中提取以 0x 或 0X 开头的十六进制数
        String[] sd = s3.split("0[Xx]([0-9a-fA-F])+");
        for (String ss : sd) {
            System.out.print("==" + ss); // 用==来区分数组元素
        }
    }
}
